Attribute

Dies ist Teil 5 von 7 der Serie Code Inspector erweitern

Prüfungen können Attribute haben. Das sind Einstellungen, die zu einem Test vorgenommen werden können. Hier kann z.B. noch definiert werden, in welchem Umfang ein Test durchgeführt werden soll.

Typische Attribute sind zum Beispiel die folgenden zur Prüfung “Analyse der WHERE-Bedingung für SELECT”:

Vorbereitung

Dem Code Inspector muss mitgeteilt werden, dass die Klasse Attribute hat. Dies geschieht in der CONSTRUCTOR-Methode:

  has_attributes = 'X'.

Attribute definieren

Die Attribute müssen als öffentliche Instanzattribute der Klasse hinzugefügt werden. In diesem Beispiel verwenden wir die Felder GP_CHECK1 und GP_CHECK2:

Im Code Inspector erkennt man Prüfungen mit Eingabefeldern (Attributen) daran, dass neben der Prüfung ein “Werte-eingeben-Icon” erscheint:

Methode QUERY_ATTRIBUTES

Die Methode IF_CI_TEST~QUERY_ATTRIBUTES muss redefiniert werden. Hier wird das Popup angezeigt, in dem die Auswahl bzw. Anzeige der Attribute erfolgt:

Mit folgendem Coding wird dieses Popup automatisch erzeugt:

Coding

CLASS cl_ci_query_attributes DEFINITION LOAD.
DATA:
 l_attributes     TYPE sci_atttab,
 l_attribute      LIKE LINE OF l_attributes,
 l_check1         TYPE c,
 l_check2         TYPE c,
 l_message(72)    TYPE c.
*-- macro to fill attributes
DEFINE fill_att.
  get reference of &1 into l_attribute-ref.
  l_attribute-text = &2.
  l_attribute-kind = &3.
  append l_attribute to l_attributes.
END-OF-DEFINITION.
*-- save global attributes local
  l_check1  = gp_check1.
  l_check2  = gp_check2.
*-- fill attribute table
  fill_att gp_check1   'Prüfung Eins'   ' '.
  fill_att gp_check2   'Prüfung Zwei'   'C'.
*-- Display Popup with attributes
  IF cl_ci_query_attributes=>generic(
    p_name       = myname
    p_title      = 'Meine Attribute'(005)
    p_attributes = l_attributes
    p_message    = l_message
    p_display    = p_display ) = 'X'.
 *-- = 'X' --> 'Exit' Button pressed on PopUp
    RETURN.
  ENDIF.
*-- set attributes-ok-flag
  attributes_ok  = c_true.

QUERY-Table / Attributtabelle

Mit Hilfe der Methode cl_ci_query_attributes=>generic werden die Attribute im Popup angezeigt. Zuvor müssen die Attribute mit dem Macro fill_att definiert werden.

Folgende Einträge sind möglich in der Tabelle für die Attribute (Auszug aus der Doku zu Struktur SCI_ATTENT):

Die Struktur SCI_ATTENT beschreibt Felder eines Dialoges. Die einzelnen Komponenten können folgen Werte annehmen.

o   KIND

  •      ‘G’ – Gruppierung der folgenden Felder
  •      ‘C’ – Darstellung als Ankreuzfeld
  •      ‘R’ – Darstellung als Auswahlknopf (siehe auch BUTTON_GROUP)
  •      ‘S’ – Darstellung als Selektionskriterium
  •      ‘L’ – Darstellung als Listbox

o   REF

    Referenz auf das Attribut

o   TEXT

    Beschreibung oder Titel

o   BUTTON_GROUP

    Spezifiziert die Auswahlgruppe der ein Auswahlknopf zugeordnet ist.

Speichern

Damit die Attribute auch gespeichert werden, müssen die beiden Methoden GET_ATTRIBUTES und PUT_ATTRIBUTES redefiniert werden. Die Namensgebung der Methoden ist meines Erachtens etwas verwirrend, denn mit GET werden die Attribute gespeichert und mit PUT gelesen…

Methode GET_ATTRIBUTES

Speichern der Attribute:

EXPORT gp_check1   = gp_check1
       gp_check2   = gp_check2
    TO DATA BUFFER p_attributes.

Methode PUT_ATTRIBUTES

Lesen der Attribute

IMPORT gp_check1   = gp_check1
       gp_check2   = gp_check2
  FROM DATA BUFFER p_attributes.

Verwendung

Die Attribute können nun im Code Inspector eingegeben werden und in der Prüfroutine abgefragt werden. Sie könnten zum Beispiel das Aufspüren des fehlenden BAPI_TRANSACTION_COMMIT als Option definieren, so dass eine Prüfung auch ohne diesen Check durchgeführt werden kann.

Sie können aber auch steuern, ob die Prüfung einen Fehler oder nur eine Warnung erzeugen soll und dies im Coding berücksichtigen.

Enno Wulff
Series Navigation<< Eigene Prüfungen implementierenDokumentation >>

Leave a Comment